/**
* 
* 
*  
*====================================================
* 文件名称: PopFormInterceptor.java
* 修订记录：
* No    日期				作者(操作:具体内容)
* 1.    2009-7-14			
*====================================================
* 类描述：(说明未实现或其它不应生成javadoc的内容)
* 
*/
package com.devframe.web.struts1.inerceptors;

import java.lang.reflect.Method;

import org.apache.commons.lang3.StringUtils;

import com.devframe.web.MyAction;
import com.devframe.web.MyContext;
import com.devframe.web.interceptors.MyInterceptor;


/**
 *<pre><b><font color="blue">PopFormInterceptor</font></b></pre>
 *
 *<pre><b>&nbsp;--pop form to request--</b></pre>
 * <pre>
    将form属性，放入request
 * <pre>
 * <b>--样例--</b>
 *   RequestStoreActionPropsInrerceptor obj = new RequestStoreActionPropsInrerceptor();
 *   obj.method();
 * </pre>
 * JDK版本：JDK1.4
 * @author  <b></b> 
 */
public class StoreActionPropsInrerceptor  implements MyInterceptor{

    /**
     * 拦截后处理
     * @param context 上下文
     * @param action action
     * @param actionResult  action结果
     * 
     */
    public void after(MyContext context, MyAction action,Object actionResult) {
        if(actionResult!=null && actionResult instanceof String && action instanceof MyAction){
            // 将action的所有共有属性推到request中,可以支持JSTL等非struts1的标签方便直接使用。
            Method[] methods = action.getClass().getMethods();
            for (int i = 0; i < methods.length; i++) {
                Method getMethod = methods[i];
                if (getMethod.getName().indexOf("get") == 0 && getMethod.getParameterTypes().length == 0) {
                    String fieldName = getMethod.getName().substring(3);
                    fieldName = StringUtils.uncapitalize(fieldName);
                    Object fieldValue;
                    try {
                        fieldValue = getMethod.invoke(action, new Object[0]);
                        context.setRequestAttribute(fieldName, fieldValue);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    public void before(MyContext context, MyAction action){
    	
    }



}
